/*************************
 * 文件名：IOT_PI_Menu.c
 * 描述：物联网设备巡检系统菜单
 * 功能：
 * 1.设置系统窗口的属性、大小、标题、颜色
 * 2.获取键盘输入的键值，并返回对应的整数值
 * 3.判断输入的字符串是否全部由数字组成
 * 4.界面
 * 创建人：IOT_王旭
 * 创建时间：2024年9月9日14:57:39
 ************************/
#include <stdio.h>
#include <stdlib.h>
#include "string.h"
#include <ctype.h>
#include "IOT_PI_Menu.h"
/**********宏定义*************/
#define OK 1
#define ERROR 2

/***********************
物联网设备巡检系统窗口文件
创建人：IOT_王旭
描述：设置系统窗口的属性、大小、标题、颜色
***********************/
void IOT_Window()
{
    system("cls");                        // 清屏
    system("mode con cols=100 lines=35"); // 修改设计界面的大小
    system("title 智检通");               // 设置控制台窗口的标题为“智检通”
    system("color 0B");                   // 设置控制台窗口的颜色
}

/************************
函数名称：IOT_GetVal
描述：获取键盘输入的键值，并返回对应的整数值
返回值：1~3：返回对应的值，-1：获取无效的键值
***************************/
int IOT_GetVal()
{
    char val[20] = {0}; // 定义一个长度为 20 的字符数组，用于存储用户输入
    printf("请输入你的选择：");
    fflush(stdin);    // 清空输入缓冲区
    scanf("%s", val); // 读取用户输入并存入 val 数组

    if (strlen(val) != 1 || IOT_AllDigit(val) == ERROR) // 如果输入的字符串长度不为 1 或者调用 IOT_AllDigit 函数判断输入不是数字返回 ERROR
    {
        return -1;
    }

    int intval = atoi(val); // 使用 atoi 函数将字符串转化为整数
    if (intval > 3)         // 如果转化后的整数大于 3
    {
        return -1;
    }

    return intval; // 返回有效的输入值
}

/*************************
函数名称：int IOT_AllDigit(char* str)
描述：判断输入的字符串是否全部由数字组成
参数：char* str
返回值：OK（1）表示全部是数字，ERROR（2）表示不是全部数字
*************************/
int IOT_AllDigit(char *str)
{
    int i; // 定义一个循环变量 i

    for (i = 0; str[i] != '\0'; i++) // 查看所有字符串直到遇到结束符'\0'
    {
        if (!isdigit(str[i])) // 如果当前字符不是数字，返回ERROR
        {
            return ERROR;
        }
    }
    return OK; // 如果遍历完整个字符串都没有找到非数字字符，返回OK
}

/*********************
函数名称：IOT_PI_FMenu
描述：IOT菜单界面
**********************/
void IOT_PI_FMenu()
{
    system("cls"); // 清屏
    printf("----------------------------------------物联网设备巡检系统----------------------------------------\n");
    printf("                                   @@@@@@@@@@@@@@@@@@@@@@@@@@                                   \n");
    printf("                                 //                          \\\\                                \n");
    printf("                            @@@---     1. 管理员登录界面      ---@@@                              \n");
    printf("                          @@@---                                ---@@@                           \n");
    printf("                        @@@---         2. 工程师登录界面          ---@@@                          \n");
    printf("                          @@@---                                ---@@@                           \n");
    printf("                            @@@---     3. 退出登录界面        ---@@@                              \n");
    printf("                                 \\\\                         //                                  \n");
    printf("                                   @@@@@@@@@@@@@@@@@@@@@@@@@@                                     \n");
}

/*********************
函数名称：IOT_Admin_Menu
描述：IOT管理员功能界面
**********************/
void IOT_Admin_Menu()
{
    system("cls"); // 清屏
    printf("-----------------------------------------管理员权限----------------------------------------\n");
    printf("        @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@        \n");
    printf("        //———工程师信息管理———\\\\      ||        //———设备信息管理———\\\\                   ");
    printf("     @@@---------------------------@@@     ||      @@@-------------------------@@@         \n");
    printf("     @@@---   1. 添加工程师信息   ---@@@    ||     @@@---   01. 添加设备信息  ---@@@        \n");
    printf("    @@@---    2. 显示工程师信息    ---@@@   ||    @@@---    02. 显示设备信息   ---@@@       \n");
    printf("   @@@---     3. 删除工程师信息     ---@@@  ||   @@@---     03. 删除设备信息    ---@@@      \n");
    printf("  @@@---      4. 查找工程师信息      ---@@@ ||  @@@---      04. 查找设备信息     ---@@@     \n");
    printf("   @@@---     5. 修改工程师信息     ---@@@  ||   @@@---     05. 修改设备信息    ---@@@      \n");
    printf("    @@@---    6. 清空工程师信息    ---@@@   ||    @@@---    06. 清空设备信息   ---@@@       \n");
    printf("     @@@---                       ---@@@    ||     @@@---   07. 退出系统      ---@@@        \n");
    printf("      @@@---------------------------@@@     ||      @@@-------------------------@@@       \n");
    printf("        \\\\    7.修改管理员账号     //       ||        \\\\     00.返回主界面      //     \n");
    printf("        @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@          \n");
}

/*********************
函数名称：IOT_Engineer_Menu
描述：IOT工程师权限界面
**********************/
void IOT_Engineer_Menu()
{
    system("cls"); // 清屏
    printf("----------------------------------------工程师权限 ----------------------------------------------- \n");
    printf("                              @@@@@@@@@@@@@@@@@@@@@@@@@@            \n");
    printf("                            //                          \\\\        \n");
    printf("                           @@@---                     ---@@@         \n");
    printf("                          @@@---    1. 查看设备信息    ---@@@        \n");
    printf("                         @@@---     2. 修改设备状态     ---@@@       \n");
    printf("                        @@@---      3. 修改工程师密码    ---@@@      \n");
    printf("                         @@@---     4. 返回主界面       ---@@@       \n");
    printf("                          @@@---    5. 退出系统        ---@@@         \n");
    printf("                           @@@---                     ---@@@         \n");
    printf("                            \\\\                          //        \n");
    printf("                              @@@@@@@@@@@@@@@@@@@@@@@@@@            \n");
}
/*********************
函数名称：IOT_Admin_Login
描述：IOT管理员登录界面
**********************/
void IOT_Admin_Login()
{
    system("cls"); // 清屏
    printf("-----------------------------------------管理员登录界面----------------------------------------\n");
    printf("                                   @@@@@@@@@@@@@@@@@@@@@@@@@@                                  \n");
    printf("                                 //                          \\\\                             \n");
    printf("                            @@@---                           ---@@@                           \n");
    printf("                          @@@---        1. 账号登录             ---@@@                        \n");
    printf("                        @@@---                                   ---@@@                       \n");
    printf("                          @@@---        2. 返回上一级            ---@@@                        \n");
    printf("                            @@@---                           ---@@@                            \n");
    printf("                                 \\\\                         //                              \n");
    printf("                                   @@@@@@@@@@@@@@@@@@@@@@@@@@                                  \n");
    printf("                          ---  初始账号为:admin  初始密码为:123456---                          \n");
}

/*********************
函数名称：IOT_Engineer_Login
描述：IOT工程师登录界面
**********************/
void IOT_Engineer_Login()
{
    system("cls"); // 清屏
    printf("-----------------------------------------工程师登录界面----------------------------------------\n");
    printf("                                   @@@@@@@@@@@@@@@@@@@@@@@@@@                                 \n");
    printf("                                 //                          \\\\                             \n");
    printf("                            @@@---                           ---@@@                            \n");
    printf("                          @@@---        1. 账号登录             ---@@@                         \n");
    printf("                        @@@---                                   ---@@@                        \n");
    printf("                          @@@---        2. 返回上一级            ---@@@                         \n");
    printf("                            @@@---                           ---@@@                            \n");
    printf("                                 \\\\                         //                               \n");
    printf("                                   @@@@@@@@@@@@@@@@@@@@@@@@@@                                  \n");
}
